/**对每个元素运行指定函数
 * 第一个参数fn，接收元素，索引，整个数组，返回布尔
 * 第二个参数thisArg，指定fn的this
 */

const arr = [1, , 3];
console.log(
  arr.forEach(
    function (item) {
      console.log(item > this.num);
    },
    { num: 0 }
  )
);

function myEvery(fn, thisArg) {
  for (let i = 0; i < this.length; i++) {
    if (this[i] === void 0) continue; // 跳过undefined
    fn.call(thisArg, this[i], i, this);
  }
}

Array.prototype.myEvery = myEvery;

console.log(
  arr.myEvery(
    function (item) {
      console.log(item > this.num);
    },
    { num: 0 }
  )
);
